'use strict';
const db = uniCloud.database()
const $ = db.command.aggregate //聚合操作符
const dbCmd = db.command  //查询条件
exports.main = async (event, context) => {
	
	const {
		user_id,//哪个用户id发布的
		article_id, //给哪篇文章（文章id）
		content,  //评论内容
		comment_id='' ,//评论id
		reply_id='' ,//子0回复id
		is_reply=false
	} = event
	// console.log('这是reply_id:',reply_id)
	// console.log('这是comment_id:',comment_id)
	// console.log('这是user_id:',user_id)
	let user = await db.collection("user").doc(user_id).get()
	//获取用户对象
	user=user.data[0]
	
	//获取当前的文章信息
	const article = await db.collection("article").doc(article_id).get()
	//获取文章下的所有评论
	const comments = article.data[0].comments
	
	
	let commentObj = {
		comment_id:genID(5), //评论id
		comment_content:content, //评论内容
		create_time:new Date().getTime(), //创建时间
		is_reply:is_reply,
		author:{
			author_id:user_id, //作者id
			author_name:user.author_name, //作者名称
			avatar:user.avatar, //作者头像
			professional:user.professional, //专业
		},
		replys:[] //回复
	}
	
	//评论文章
	if(comment_id === ""){
		commentObj.replys = []
		commentObj = dbCmd.unshift(commentObj)
		// console.log('commentObj：++',commentObj)
	}else{
		//回复对方文章的评论
		//获取评论的索引
		let commentIndex = comments.findIndex((item)=>item.comment_id === comment_id)
		
		let commentAuthor = ""
		if(is_reply){
			//子回复
			// console.log('子回复')
			commentAuthor = comments[commentIndex].replys.find((item)=>item.comment_id === reply_id)
			console.log('子回复',comments[commentIndex])
			
		}else{
			//主回复
			//获取作者信息
			// console.log('主回复')
			commentAuthor = comments.find((item)=>item.comment_id === comment_id)	
			
		}
		commentAuthor = commentAuthor.author.author_name
		//添加属性（用to代表要回复的人）
		commentObj.to = commentAuthor
		
		//更新回复信息
		commentObj = {
			[commentIndex]:{
				replys:dbCmd.unshift(commentObj)
			}
		}
	}
	
	await db.collection("article").doc(article_id).update({
		comments:commentObj
	})
	
	
	//返回数据给客户端
	return {
		code:200,
		message:'数据更新成功'
	}
};

//生成随机id
function genID(length){
	return  Number(Math.random().toString().substr(3,length) +Date.now()).toString(36)
}